Intro

This is just the same thing as the “Sample Game” vignette, but with only the global maps (and player moves) shown. The idea is be able to more easily follow the flow of the game.

library(MundusCentrum)

Setup the game

game <- new_game(
  name = "Anno Uno",
  players = list(
    list(
      name = "Big Grizz",
      team = "Space Marines",
      units = system.file("extdata", "unit-templates", "big_grizz.csv", package = "MundusCentrum")
    ),
    list(
      name = "Eric",
      team = "Space Orcs",
      units = system.file("extdata", "unit-templates", "eric.csv", package = "MundusCentrum")
    ),
    list(
      name = "Chris",
      team = "Tyrannids",
      units = system.file("extdata", "unit-templates", "chris.csv", package = "MundusCentrum")
    )
  ),
  points = 2000
)
## All units resolved.

see the starting point

This is the state of the game at the beginning

res <- reconcile_player_orders(game)
## All units resolved.
print(draw_map(res))

Turn play

Get a list of unit ID’s to easily make the modify_unit() calls below.

moby_units <- read_player_map(game, "big_grizz") %>% pull(unit_name)
eric_units <- read_player_map(game, "eric") %>% pull(unit_name)
chris_units <- read_player_map(game, "chris") %>% pull(unit_name)

TURN 1

Players change their maps (making orders)

modify_unit(game, "big_grizz", moby_units[1],     "control","B10")
modify_unit(game, "big_grizz", moby_units[c(2:8, 14:18, 22, 23)], "move", "E2")
modify_unit(game, "big_grizz", moby_units[9],     "control","B11")
modify_unit(game, "big_grizz", moby_units[10:13], "move","E1")
modify_unit(game, "big_grizz", moby_units[19:20], "move","B6")
modify_unit(game, "big_grizz", moby_units[21],    "move","B8")
modify_unit(game, "eric",      eric_units[1:9],   "move",  "C1")
modify_unit(game, "eric",      eric_units[10:17], "move","F7")
modify_unit(game, "eric",      eric_units[18:24], "control","C3")
modify_unit(game, "eric",      eric_units[25:28], "control","C4")
modify_unit(game, "chris",     chris_units[1:5],  "control","F1")
modify_unit(game, "chris",     chris_units[6:9],  "control","F2")
modify_unit(game, "chris",     chris_units[10:11],"move",  "F3")
modify_unit(game, "chris",     chris_units[12],"move",  "E5")
modify_unit(game, "chris",     chris_units[13],"move",  "F4")

res <- reconcile_player_orders(game)
## All units resolved.
print(draw_map(res))

TURN 2

modify_unit(game, "big_grizz", "E2",   "attack",  "F1")
modify_unit(game, "big_grizz", "B6",   "control", "B6")
modify_unit(game, "big_grizz", "B11",  "attack",  "E3")
modify_unit(game, "big_grizz", "B8",   "attack",  "B2")
modify_unit(game, "big_grizz", "E1",   "attack",  "B2")
modify_unit(game, "chris",     "E5",   "move",    "E5") # 1 units
modify_unit(game, "chris",     "F1",   "control", "F1") # 5 units
modify_unit(game, "chris",     "F2",   "control", "F2") # 4 units
modify_unit(game, "chris",     "F3",   "move",    "F4") # 2 units
modify_unit(game, "chris",     "F4",   "control", "F4") # 1 units
modify_unit(game, "eric",      "F7",   "attack",  "F4") # 8 units
modify_unit(game, "eric",      "C1",   "move",    "B4") # 9 units

res <- reconcile_player_orders(game)
## CONFLICT(s):
## Warning: Conflict is at hand! Please resolve territorial disputes.
print(draw_map(res, "CONFLICT!"))

Fights are resolved

modify_unit(game, "eric",      "F4",  "retreat", "F7")
modify_unit(game, "chris",     "F1",  "retreat", "F2")

res <- reconcile_player_orders(game)
## All units resolved.
print(draw_map(res))

TURN 3

modify_unit(game, "big_grizz",   "B2",   "move",    "B1") # 5 units
modify_unit(game, "big_grizz",   "B6",   "move",    "C1") # 2 units
modify_unit(game, "big_grizz",   "E3",   "move",    "E4") # 1 units
modify_unit(game, "big_grizz",   "F1",   "control", "F1") # 14 units
modify_unit(game, "chris",       "E5",   "move",    "E7") # 1 units
modify_unit(game, "chris",       "F2",   "control", "F2") # 9 units
modify_unit(game, "chris",       "F4",   "control", "F4") # 3 units
modify_unit(game, "eric",        "B4",   "move",    "B1") # 9 units
modify_unit(game, "eric",        "C3",   "control", "C3") # 7 units
modify_unit(game, "eric",        "F7",   "control", "F7") # 8 units

res <- reconcile_player_orders(game)
## CONFLICT(s):
## Warning: Conflict is at hand! Please resolve territorial disputes.
print(draw_map(res, "CONFLICT!"))

Encounter battles

modify_unit(game, "big_grizz",  "B1", "retreat", "B2") # 5 units
res <- reconcile_player_orders(game)
## All units resolved.

TURN 4

modify_unit(game, "big_grizz",   "B2",   "control", "B2") # 5 units
modify_unit(game, "big_grizz",   "C1",   "move",    "B4") # 2 units
modify_unit(game, "big_grizz",   "E4",   "move",    "E6") # 1 units
modify_unit(game, "big_grizz",   "F1",   "control", "F1") # 14 units
modify_unit(game, "chris",       "E7",   "move",    "F8") # 1 units
modify_unit(game, "chris",       "F2",   "attack",  "F1") # 9 units
modify_unit(game, "chris",       "F4",   "attack",  "F7") # 3 units
modify_unit(game, "eric",        "B1",   "attack",  "B2") # 9 units
modify_unit(game, "eric",        "F7",   "control", "F7") # 8 units

res <- reconcile_player_orders(game)
## CONFLICT(s):
## Warning: Conflict is at hand! Please resolve territorial disputes.
print(draw_map(res, "CONFLICT!"))

Fights are resolved

modify_unit(game, "big_grizz",   "F1",   "retreat", "E2") # 14 units
modify_unit(game, "eric",        "B2",   "retreat", "B1") # 9 units
modify_unit(game, "eric",        "F7",   "retreat", "F8") # 8 units

res <- reconcile_player_orders(game)
## CONFLICT(s):
## Warning: Conflict is at hand! Please resolve territorial disputes.
print(draw_map(res, "CONFLICT!"))

Retreats

modify_unit(game, "eric",  "F8", "retreat", "F5") # 5 units
res <- reconcile_player_orders(game)
## All units resolved.

TURN 5

print(draw_map(res))

knitr::kable(add_keywords(res))
player loc unit_type action unit_name control transport fast fly soar deep sneak
eric B1 canoptek_plasmacyte retreat Mad Beggar FALSE FALSE FALSE TRUE FALSE FALSE FALSE
eric B1 canoptek_spyders retreat Amateur Man FALSE FALSE FALSE TRUE FALSE FALSE FALSE
eric B1 canoptek_spyders retreat Tuff Conqueror FALSE FALSE FALSE TRUE FALSE FALSE FALSE
eric B1 illuminor_szeras retreat Weston Warner FALSE FALSE FALSE FALSE FALSE FALSE FALSE
eric B1 immortals retreat Calvin Li TRUE FALSE FALSE FALSE FALSE FALSE FALSE
eric B1 lychgaurd retreat Benjamin Chan FALSE FALSE FALSE FALSE FALSE FALSE FALSE
eric B1 skorpekh_destroyers retreat Connor Kim FALSE FALSE FALSE FALSE FALSE FALSE FALSE
eric B1 technomancer retreat John Foreman FALSE FALSE FALSE FALSE FALSE TRUE FALSE
eric B1 trazyn_the_infinite retreat Payton King FALSE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz B10 ravenwing_talonmaster control Pesty RZA FALSE FALSE TRUE TRUE FALSE FALSE FALSE
big_grizz B2 dreadnought control Jackson Myers FALSE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz B2 eradicators control Sebastian Mitchell FALSE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz B2 ravenwing_attack_bike control Andy Serkis FALSE FALSE TRUE FALSE FALSE FALSE FALSE
big_grizz B2 ravenwing_attack_bike control Shah Rukh Khan FALSE FALSE TRUE FALSE FALSE FALSE FALSE
big_grizz B2 ravenwing_bike_squad control Lin-Manuel Miranda FALSE FALSE TRUE FALSE FALSE FALSE FALSE
big_grizz B4 eliminators move Blanton Alspaugh FALSE FALSE FALSE FALSE FALSE FALSE TRUE
big_grizz B4 vindicare_assassin move Don Was FALSE FALSE FALSE FALSE FALSE FALSE TRUE
eric C3 canoptek_scarab_swarms control Hugo Weaving FALSE FALSE TRUE TRUE FALSE FALSE FALSE
eric C3 canoptek_scarab_swarms control Insane Genius FALSE FALSE TRUE TRUE FALSE FALSE FALSE
eric C3 immortals control Destiny Maldonado TRUE FALSE FALSE FALSE FALSE FALSE FALSE
eric C3 necron_warriors control Nevaeh Soto TRUE FALSE FALSE FALSE FALSE FALSE FALSE
eric C3 night_scythe control Akshay Kumar Miller FALSE TRUE FALSE TRUE TRUE FALSE FALSE
eric C3 overlord control Jesse Bryant FALSE FALSE FALSE FALSE FALSE FALSE FALSE
eric C3 royal_warden control Jameson Tate FALSE FALSE FALSE FALSE FALSE FALSE FALSE
eric C4 canoptek_scarab_swarms control Alan Tudyk FALSE FALSE TRUE TRUE FALSE FALSE FALSE
eric C4 canoptek_scarab_swarms control Zoe Saldana FALSE FALSE TRUE TRUE FALSE FALSE FALSE
eric C4 immortals control Leilani Bennett TRUE FALSE FALSE FALSE FALSE FALSE FALSE
eric C4 necron_warriors control Lucy Byrd TRUE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz E2 deathwing_captain retreat Michael Crichton FALSE FALSE FALSE FALSE FALSE TRUE FALSE
big_grizz E2 deathwing_knights retreat J K Rowling FALSE FALSE FALSE FALSE FALSE TRUE FALSE
big_grizz E2 deathwing_terminators retreat Siddhartha Deb FALSE FALSE FALSE FALSE FALSE TRUE FALSE
big_grizz E2 invictor_tactical_warsuit retreat Joanna Nickrenz FALSE FALSE FALSE FALSE FALSE FALSE TRUE
big_grizz E2 phobos_librarian retreat T Bone Burnett FALSE FALSE FALSE FALSE FALSE FALSE TRUE
big_grizz E2 ravenwing_apothecary retreat Idris Elba FALSE FALSE TRUE FALSE FALSE FALSE FALSE
big_grizz E2 redemptor_dreadnought retreat Annabelle Ortega FALSE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz E2 rhino retreat John Ratzenberger FALSE TRUE TRUE FALSE FALSE FALSE FALSE
big_grizz E2 storm_raven retreat Drunken Wanderer FALSE TRUE TRUE TRUE TRUE FALSE FALSE
big_grizz E2 tactical_squad retreat Jaden Schneider TRUE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz E2 tactical_squad retreat Joel Mullins TRUE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz E2 tactical_squad retreat Jude Watson TRUE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz E2 tactical_squad retreat Matthew Ferguson TRUE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz E2 techmarine retreat Logan Mcgee FALSE FALSE FALSE FALSE FALSE FALSE FALSE
big_grizz E6 infiltrators move Ezra Burton TRUE FALSE FALSE FALSE FALSE FALSE TRUE
chris F1 biovores attack Hannah Davidson FALSE FALSE FALSE FALSE FALSE FALSE FALSE
chris F1 broodlord attack Ricky Reed FALSE FALSE FALSE FALSE FALSE FALSE TRUE
chris F1 flying_hive_tryant attack Midnight Artist FALSE FALSE TRUE TRUE TRUE FALSE FALSE
chris F1 genestealers attack Aliyah Holmes TRUE FALSE FALSE FALSE FALSE FALSE TRUE
chris F1 hive_crone attack Bobby McFerrin FALSE FALSE TRUE TRUE TRUE FALSE FALSE
chris F1 hive_guard attack Colin Harrison FALSE FALSE FALSE FALSE FALSE FALSE FALSE
chris F1 hormagaunts attack Roman Rose TRUE FALSE FALSE FALSE FALSE FALSE FALSE
chris F1 termagants attack Mariah Ortiz TRUE FALSE FALSE FALSE FALSE FALSE FALSE
chris F1 tyranid_warriors attack Aaliyah Camacho TRUE FALSE FALSE FALSE FALSE FALSE FALSE
eric F5 canoptek_scarab_swarms retreat Clark Gable FALSE FALSE TRUE TRUE FALSE FALSE FALSE
eric F5 canoptek_wraiths retreat David Niven FALSE FALSE TRUE FALSE FALSE FALSE FALSE
eric F5 cryptothralls retreat Jayden Hunter FALSE FALSE FALSE FALSE FALSE FALSE FALSE
eric F5 cryptothralls retreat Luna Rice FALSE FALSE FALSE FALSE FALSE FALSE FALSE
eric F5 deathmarks retreat Pharrell Williams FALSE FALSE FALSE FALSE FALSE TRUE TRUE
eric F5 night_scythe retreat Sanjay Garg Powers FALSE TRUE FALSE TRUE TRUE FALSE FALSE
eric F5 overlord retreat Juan Velasquez FALSE FALSE FALSE FALSE FALSE FALSE FALSE
eric F5 royal_warden retreat Diego Knight FALSE FALSE FALSE FALSE FALSE FALSE FALSE
chris F7 raveners attack Robert Nozick FALSE FALSE TRUE FALSE FALSE TRUE FALSE
chris F7 ripper_swarms attack Abraham Bradley TRUE FALSE FALSE FALSE FALSE TRUE FALSE
chris F7 zoathropes attack Amazing Desperado FALSE FALSE FALSE TRUE FALSE FALSE FALSE
chris F8 lictor move Immanuel Kant FALSE FALSE FALSE FALSE FALSE TRUE TRUE